//
//  LYQStatusPictureView.swift
//  SwiftWeibo
//
//  Created by 刘英群 on 2017/2/9.
//  Copyright © 2017年 刘英群. All rights reserved.
//

import UIKit

class LYQStatusPictureView: UIView {
    
    var viewModel: LYQStatusViewModel? {
        didSet {
            
            calcViewSize()
            
            //设置urls
            //设置配图(被转发和原创)
            urls = viewModel?.picURLs
        }
    }
    
    //根据视图模型的配图视图大小，调试显示内容
    fileprivate func calcViewSize() {
        
        //处理宽度
        // 1.单图,根据配图视图的大小，修改 subViews[0]的宽高
        if viewModel?.picURLs?.count == 1 {
            
            let viewSize = viewModel?.pictureViewSize ?? CGSize()
            
            // a) 获取第0个图像视图
            let v = subviews[0]
            v.frame = CGRect(x: 0,
                             y: LYQStatusPictureViewOutterMargin,
                             width: viewSize.width,
                             height: viewSize.height - LYQStatusPictureViewOutterMargin)
        } else {
            // 2.多图，回复subviews[0]的宽高，保证九宫格布局宽高
            
            let v = subviews[0]
            v.frame = CGRect(x: 0,
                             y: LYQStatusPictureViewOutterMargin,
                             width: LYQStatusPictureItemWidth,
                             height: LYQStatusPictureItemWidth)
        }
        
        //修改高度约束
        heightCons.constant = viewModel?.pictureViewSize.height ?? 0
    }
    
    //配图视图的数组
    fileprivate var urls:[LYQStatusPicture]? {
        didSet{
            
            // 1.隐藏所有的imageView
            for v in subviews {
                
                v.isHidden = true
            }
            
            // 2.遍历urls数组， 顺序设置图像
            var index = 0
            for url in urls ?? [] {
                
                // 获得对应索引的imageView
                let iv = subviews[index] as! UIImageView
                
                // 4张图像处理
                if index == 1 && urls?.count == 4 {
                    index += 1
                }
                
                // 设置图像
                iv.cz_setImage(urlString: url.thumbnail_pic, placeholderImage: nil)
                
                // 显示图像
                iv.isHidden = false
                
                index += 1
            }
        }
    }
    
    @IBOutlet weak var heightCons: NSLayoutConstraint!

    override func awakeFromNib() {
        
        setupUI()
    }
}

// 设置界面
extension LYQStatusPictureView {
    
    // 1.cell中所有的控件都是提前准备好
    // 2.设置的时候，根据数据决定是否显示
    // 3.不要动态创建控件
    fileprivate func setupUI() {
        
        // 设置背景颜色
        backgroundColor = superview?.backgroundColor
        
        // 超出边界的内容不显示
        clipsToBounds = true
        
        let count = 3
        let rect = CGRect (x: 0,
                           y: LYQStatusPictureViewOutterMargin,
                           width: LYQStatusPictureItemWidth,
                           height: LYQStatusPictureItemWidth)
        // 循环创建9个imageView
        for i in 0..<count * count {
            
            let iv = UIImageView()
            
            // 设置contentMode
            iv.contentMode = .scaleToFill
            iv.clipsToBounds = true
            
            //行 -> Y
            let row =  CGFloat(i / count)
            
            //列 -> X
            let col = CGFloat(i % count)
            
            let xOffset = col * (LYQStatusPictureItemWidth + LYQStatusPictureViewInnerMargin)
            let yOffset = row * (LYQStatusPictureItemWidth + LYQStatusPictureViewInnerMargin)
            
            iv.frame = rect.offsetBy(dx: xOffset, dy: yOffset)
            
            addSubview(iv)
        }
    }
}
